let set1 = new Set(Array.from({ length: 5 }, (_, i) => i));

console.log("当前集合为", set1);

/*
    has() 判断元素是否在集合中
*/
let isHave_20 = set1.has(20);
console.log("20是否在集合中", isHave_20);

/*
    add() 往集合中添加元素
*/
set1.add(10);

//可以链式调用
set1.add(15).add(45);

console.log("当前集合为", set1);

/*
    forEach() 遍历处理每一个值
*/
set1.forEach((item) => {
  //和数组不同，set没有提供索引
  console.log("set的值为", item);
});

/*
    values() 得到迭代器对象
*/
let iterableObj = set1.values();
//迭代器的使用
console.log("值为", iterableObj.next().value);

/*
    delete(value) 删除元素
*/
let set2 = new Set(["abc", { a: 15, b: 13 }, { name: 7 }]);

console.log("当前集合为", set2);
//对于原始数据类型，直接删除即可
set2.delete("abc");
console.log("删除abc字符串后的集合为", set2);

//但是对于引用数据类型，就不能这样删除，因为无法比较
//所以采用特性判断法
set2.forEach((item) => {
  if (item.a == 15) {
    set2.delete(item);
  }
});
console.log("删除特定对象后的集合为", set2);

/*
    clear() 清空集合
*/
set2.clear();
console.log("清空后的集合为", set2);
